package com.itheima.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.itheima.bean.Category;
import com.itheima.bean.Dish;
import com.itheima.bean.Setmeal;
import com.itheima.dao.CategoryDao;
import com.itheima.dao.DishDao;
import com.itheima.dao.SetmealDao;
import com.itheima.exception.CustomException;
import com.itheima.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class CategoryServiceImpl extends ServiceImpl<CategoryDao, Category> implements CategoryService {

    //service层建议调用dao   注入dao接口代理对象出现红色波浪线：原因是idea的提示问题 到底有没有问题要运行起来才知道 当然一般是没问题
    @Autowired
    private DishDao dishDao;

    @Autowired
    private SetmealDao setmealDao;

    @Override
    public void deleteById(Long ids) {
        //1.判断ids是否为null  为null说明id不存在
        if(ids==null){
            throw new CustomException("分类id不存在！");
        }

        //2.根据分类id【ids】去菜品表中查询是否存在菜品统计数量  >0：存在
        LambdaQueryWrapper<Dish> dishLambdaQueryWrapper = new LambdaQueryWrapper<>();
        dishLambdaQueryWrapper.eq(Dish::getCategoryId,ids);
        Integer count = dishDao.selectCount(dishLambdaQueryWrapper);
        if(count>0){
            throw new CustomException("该分类下关联菜品数据！");
        }


        //3.根据分类id【ids】去套餐表中查询是否存在套餐统计数量  >0：存在
        LambdaQueryWrapper<Setmeal> setmealLambdaQueryWrapper = new LambdaQueryWrapper<>();
        setmealLambdaQueryWrapper.eq(Setmeal::getCategoryId,ids);
        Integer count1 = setmealDao.selectCount(setmealLambdaQueryWrapper);
        if(count1>0){
            throw new CustomException("该分类下关联套餐数据！");
        }

        //4.根据id删除当前分类   this:表示就是当前类CategoryServiceImpl对象  可以省略  removeById：是由MyBatisPlus为service层提供封好的方法 可以直接使用
        this.removeById(ids);
    }
}
